#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>

//int main()
//{
//	/*char c = 1;
//	printf("%u\n", sizeof(c));
//	printf("%u\n", sizeof(+c));
//	printf("%u\n", sizeof(!c));*/
//
//	/*printf("%d\n", sizeof(char*));
//	printf("%d\n", sizeof(short*));
//	printf("%d\n", sizeof(int*));
//	printf("%d\n", sizeof(double*));*/
//
//	int a = 0x11223344;
//	//int* pa = &a;
//	char* pc = &a;
//	//*pa = 0;
//	*pc = 0;
//
//	return 0;
//}

//int main()
//{
//	int a = 0x11223344;
//	int* pa =  &a;
//	char* pc = &a;
//	printf("%p\n", pa);
//	printf("%p\n", pa+1);
//	printf("%p\n", pc);
//	printf("%p\n", pc+1);
//
//	return 0;
//}

//int main()
//{
//	int arr[10] = { 0 };
//	//int* p = arr;//数组名-数组首元素的地址
//	char* p = arr;
//	int i = 0;
//	for (i = 0; i < 10; i++)
//	{
//		*(p + i) = 1;
//	}
//
//
//	return 0;
//
//}
//
//int main()
//{
//	int a;//局部变量不初始化，默认是随机值
//	int* p;//局部的指针变量，就被初始化为随机值
//	*p = 20;
//	return 0;
//}

//int main()
//{
//	int arr[10] = { 0 };
//	int* p = arr;
//	int i = 0;
//	for (i = 0; i < 12; i++)
//	{
//		p++;
//	}
//	return 0;
//}

//int* test()
//{
//	int a = 10;
//	return &a;
//}
//
//int main()
//{
//	int* p = test();
//	return 0;
//}

//int main()
//{
//	//未初始化的局部变量
//	int* p;//局部变量不初始化，里面默认放的是一个随机值
//	*p = 20;
//
//	return 0;
//}

//数组导致的野指针的问题
//
//int main()
//{
//	int a[10] = { 0 };
//	int* p = a;
//	int i = 0;
//	for (i = 0; i <= 12; i++)
//	{
//		/**p = i;
//		p++;*/
//		*p++ = i;
//	}
//	return 0;
//}
//
//int* test()
//{
//	/*int a = 10;
//	return &a;*/
//	int arr[10] = { 0 };
//	return arr;
//
//}
//
//int main()
//{
//	int* p = test();
//	printf("%d\n", *p);
//
//	return 0;
//}

//1. 指针初始化
//int main()
//{
//	int a = 10;
//	int* pa = &a;
//	int* p = NULL;//NULL - 用来初始化指针的，给指针赋值
//
//	return 0;
//}

//指针指向空间释放及时置NULL
//int main()
//{
//	int a = 10;
//	int* pa = &a;
//	*pa = 20;
//	//
//	pa = NULL;
//
//	if (pa != NULL)
//	{
//
//	}
//
//	return 0;
//}

//int main()
//{
//	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
//	int i = 0;
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	int* p = &arr[9];
//	/*for (i = 0; i < sz; i++)
//	{
//		printf("%d ", *p);
//		p++;
//	}*/
//
//	for (i = 0; i < 5; i++)
//	{
//		printf("%d ", *p);
//		p-=2;
//	}
//	return 0;
//}


//int main()
//{
//	char ch[5] = { 0 };
//
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	printf("%d\n", &arr[0] - &arr[9]);
//	printf("%d\n", &arr[9] - &ch[0]);//err
//
//	return 0;
//}

//int my_strlen(char* str)
//{
//	char* start = str;
//	char* end = str;
//	while (*end != '\0')
//	{
//		end++;
//		
//	}
//
//	return end - start;
//}
//
//int main()
//{
//	//
//	//strlen - 求字符串长度
//	//递归 - 模拟实现了strlen- 计算器的方式1，递归的方式2
//
//	char arr[] = "bit";
//	int len = my_strlen(arr);
//	printf("%d\n", len);
//
//	return 0;
//
//}